<?php
namespace heihei;

/**
 * BaseHeihei是Heihei框架的核心助手类。
 *
 * 不要直接使用BaseHeihei。
 * 相反，使用它的子类[[\Heihei]]，您可以替换它来定制BaseHeihei的方法。
 *
 * @author dejin <dejin@aliyun.com>
 */
class BaseHeihei
{
    public static $classLoader;

    public static $modules = [];

    /**
     * 还回当前框架版本号
     * @return string 框架版本
     */
    public static function getVersion()
    {
        return '1.0.0';
    }

    public static function loadModules($paths = [])
    {
        $modules = self::getModules($paths);
        foreach ($modules as $prefix => $path) {
            $moduleFile = $path . DIRECTORY_SEPARATOR . 'Module.php';
            if(!is_file($moduleFile)){
                continue;
            }            
            self::$classLoader->addPsr4($prefix, [$path]);
            $moduleName = str_replace('\\', '-',trim($prefix, '\\'));
            self::$modules[$moduleName] = ['class' => $prefix . 'Module'];
        }
    }

    private static function getModules($paths){
        $modules = [];
        foreach ($paths as $modulePath) {
            $modulesConfigFile = $modulePath . DIRECTORY_SEPARATOR . 'modules.php';
            if(!is_file($modulesConfigFile)){
                throw new \Exception("模块配置{$modulesConfigFile}文件未找到！");
            }
            $modules = array_merge($modules, include $modulesConfigFile);
        }
        return $modules;
    }
}
